技術不忘鬆獅小白的伴陪,無趣的技術文配上一抹呆萌的表情包,真想抱緊處理,實在是太療育了!記得還是要滑鼠向下捲動知道嘛!
新手小白仍需要勇於嘗試,透過這次的參賽逼自己一定要把這樣的技術放到自己口袋裡,多少沒關係但至少有向前邁進,雖然有太多Docker / K8s大大出品的深度內容真的令人佩服,但雖然這些厲害的文章很多,但畢竟沒有因為片面看了這樣的內容就能植入到小弟我的金魚腦中,所以決定透過生活輕鬆的筆記手札形式,讓人感到簡單而容易咀嚼吸收更好收納隨時可以重點翻閱。
知道技術如果也能簡單Get歷史的脈絡重要名詞相信對你我學習上知道為何而學打從心裡認同之外,當與人聊起不只是技術而是起源發展時更顯得對方對你的博學感到佩服(雖然就只是知道點專名而已)不管..反正假裝博學也是一項技能,就讓我們開啟手札歷程吧!
LXC 這熟悉的名字來自Linux軟體容器(Linux Containers)的縮寫,一種作業系統層虛擬化技術,為Linux核心容器功能的用戶介面,並寄生在同個Host OS上,所以它很輕量快速,不像VM每開一個Guest OS都要跑完整的開機流程。
一開始Docker也是架設在LXC之上,不過從Docker 0.9版以後,LXC 已經不再是Docker 唯一且預設的執行環境,可以參考What does Docker technology add to just plain LXC?Docker FAQ
Docker本質是一套開源軟體平台,用於開發、交付與執行應用.它允許用戶將基礎建設中的應用都獨立出來,形成每個更細小的顆粒 (就是指容器),從而增加軟體交付速度。
透過Linux核心的資源隔離機制,如cgroup及namespace來建構出各自獨立Containers。這可以在單一Linux實體下運作,避免啟動一個虛擬機造成額外的工作負載量。
原作者 Solomon Hykes
開發者 Docker, Inc.
原始發布時間 2013/3
穩定版本 19.03.12 (2020/6/25)
程式語言 Go
作業系統 Linux、Windows、macOS
支援大眾系統平台 x86-64、ARM
類型 OS virtualization
Docker 官網
不免俗的還是要簡單跟目前主流虛擬機器做個簡易比較
容器無需在透過OS來作為一個個的資源隔離,而是直接透過容器引擎統一調度資源給一個個所需的應用程式服務各自獨立耦合性低,高度平台彈性。
特性差異比較
PS:資料來源來自於知乎大大的參照引用
Kubernetes 在希臘語意為舵手或駕駛員,由Joe Beda、Brendan Burns和Craig McLuckie 創立,並配合其他Google工程師群進行加盟創作,
在2014年 Google 首次對外宣布該系統開發和設計都受 Google Borg 系統影響 (此系統是叢集管理的代表),其許多聲望很高的貢獻者也是 Borg 系統開發者。
Google內部Kubernetes原始代號曾是星際迷航中的Borg。其Kubernetes 標識中舵輪有七個輪輻就是對該專案代號的致意。現今IT業界常見縮寫「K8s」則是「ubernete」八個字母縮寫為「8」而來。
而回到Kubernetes還未問世時代,只有一種容器技術如:Docker,雖然每個容器中所執行的服務彼此獨立不受其干擾,只須透過容器供的私有網路溝通即可。但隨著使用者時間推進之下需求隨著越來越大,服務資料量都越來越多,很快就要撐爆了。
最簡單的魚缸理論,原本你只有五六條魚時,只需一個小魚缸即可,但是過一段時間生了二三十條小魚,有發現嗎!現有的小魚缸已經不敷使用,傳統作法時就再買個大魚缸,把原來魚缸中水草、沙子、岩石裝飾、打氣機設備等..跟所有的魚,重新搬移到新魚缸中,這是個非常耗功的過程。
現在換個方式思考,如果你新買的魚缸可以和既有的魚缸打再一起彼此空間共用,魚缸間透過彼此打通的通道可以自動分散不同的兩個魚缸,也就無需重新搬移的工作。而Kubernetes就是為了多主機擴容而生,提供更好的資源調度,也就是說上面那些你養的魚,可以自由游到比較不擁擠的魚缸中。
雖然Docker容器本身也有供Docker Swarm來提供多機叢集的能力,但功能上比起Kubernetes仍有些不少的差距,就看需求者本身的視角選擇了。
初始版本 2014年6月7日 (六年前)
目前穩定版本 1.19.0 (2020年8月26日)
程式源碼
程式語言 Go
作業系統 跨平台
類型 叢集管理
授權條款 Apache 授權條款 2.0
網站 kubernetes.io
一個淒美的長頸鹿童話故事講解 Kubernetes,雖然已經是兩年前的了,但仍值得一看。
淒美的K8S童話故事
最後看到這了,是否還有這份好奇心來撥開這潘朵拉的盒子呢!如果還有記得是會殺死貓的!母湯喔><,好啦!其實這已經算滿明顯需要的知識其實都來自於Linux基礎指令,剩下就一些網路與撰寫YAML與Dockerfile的程式邏輯基礎!一起加油吧。